/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Toepen.SpelFacade;

import Toepen.LoungeFacade.FacadeGebruiker;

/**
 * Facade versie van de Deelnemer uit het domeinmodel. Representeert de speler
 * in het spel zelf. Je kunt alleen de gespeelde kaarten zien en alleen maar het
 * aantal kaarten in de hand in verband met veiligheid van de applicatie.
 * @author Bart Piggen
 */
public class FacadeDeelnemer extends FacadeGebruiker {

    private Integer _AantalKaartenInHand;
    FacadeKaart[] _KaartenGespeeld;
    private boolean _IsAanBeurt;
    private int _StrafPunten;
    private int _Inzet;

    /**
     * Deze constructor is voor afgeleide classes
     * @param clone FacadeDeelnemer te clonen
     */
    protected FacadeDeelnemer(FacadeDeelnemer clone)
    {
        this(clone, clone._AantalKaartenInHand, clone._KaartenGespeeld, clone._IsAanBeurt, clone._StrafPunten, clone._Inzet);
    }

    /**
     * Constructor voor FacadeDeelnemer
     * @param gebruiker FacadeGebruiker waarvan deze FacadeDeelnemer afgeleid
     * wordt
     * @param aantalKaartenInHand Integer met het aantal kaarten in de hand
     * @param kaartenGespeeld FacadeKaart Array met de gespeelde kaarten
     * @param isAanBeurt    boolean die true is als deze speler aan de beurt is
     * @param strafPunten int met het aantal verzamelde strafpunten
     * @param inzet int met de inzet van deze speler
     */
    protected FacadeDeelnemer(FacadeGebruiker gebruiker, Integer aantalKaartenInHand, FacadeKaart[] kaartenGespeeld, boolean isAanBeurt, int strafPunten, int inzet)
    {
        super(gebruiker);
        _AantalKaartenInHand=aantalKaartenInHand;
        _KaartenGespeeld=kaartenGespeeld;
        _IsAanBeurt=isAanBeurt;
        _StrafPunten=strafPunten;
        _Inzet=inzet;
    }

    /**
     * @return het aantal kaarten wat deze speler in de hand heeft
     */
    public Integer getAantalKaartenInHand()
    {
        return(_AantalKaartenInHand);
    }

    /**
     * @return aantal kaarten wat gespeeld is
     */
    public Integer getAantalKaartenGespeeld()
    {
        return(_KaartenGespeeld.length);
    }

    /**
     * @return Array met daarin de reeds gespeelde kaarten
     */
    public FacadeKaart[] getKaartenGespeeld()
    {
     return(_KaartenGespeeld);
    }

    /**
     * @return of deze deelnemer aan de beurt is in het spel
     */
    public boolean getIsAanBeurt()
    {
        return(_IsAanBeurt);
    }

    /**
     * @return aantal strafpunten wat deze deelnemer verzameld heeft
     */
    public int getStrafPunten()
    {
        return(_StrafPunten);
    }

    /**
     * @return aantal punten wat ingezet is
     */
    public int getInzet()
    {
        return(_Inzet);
    }
}
